<template>
  <div>
    <UploadExcel :on-success="handleSuccess" :before-upload="beforeUpload" />
  </div>
</template>

<script>
import UploadExcel from '@/components/UploadExcel/index.vue'
import { reqImportEmployee } from '@/api/employees' // api 接口

export default {
  components: {
    UploadExcel
  },
  methods: {
    // 区分当前的excel上传 是上传怎样的 excel数据
    // uploadExcelFn() {

    // },
    handleSuccess({ results, header }) {
      // 判断当前的excel 是不是员工的新增数据  根据路由跳转传来的参数进行对比
      if (this.$route.query.type === 'user') {
        this.uploadExcelFn(results, header)
      }
    },
    beforeUpload(file) {
      // console.log(file) // 文件名等信息
      const isLt1M = file.size / 1024 / 1024 < 1
      // console.log(isLt1M);文件大小是否小于1M
      if (isLt1M) {
        return true
      }
      this.$message({
        message: '请不要上传大于1M的文件',
        type: 'warning'
      })
    },
    async uploadExcelFn(results, header) {
      // async handleSuccess({ header, results }) {
      //   console.log(header) // 表格标题
      //   console.log(results) // 表格数据
      // 对 数据进行二次处理 因为返回的数据集键名不符合我们的要求
      const userRelation = {
        入职日期: 'timeOfEntry',
        手机号: 'mobile',
        姓名: 'username',
        转正日期: 'correctionTime',
        工号: 'workNubmber'
      }
      const arr = []
      results.forEach((item) => {
        // 新建 一个对象 换掉键 保留值
        const obj = {}

        for (const key in item) {
          // 把 userRelation的值 赋值给前面
          const englishKey = userRelation[key]
          // 判断当前的 englishkey是不是 日期 如果是做处理 如果不是正常
          // 判断enliskey是不是在前面的俩组成的数组里面
          if (['timeOfEntry', 'correctionTime'].includes(englishKey)) {
            obj[englishKey] = this.formatExcelDate(item[key], '-')
          } else {
            //   console.log(englishKey)
            //   把值 item的值 赋值给obj
            obj[englishKey] = item[key]
          }

          //   console.log(obj[englishKey])
        }
        // 存储到数组里面
        arr.push(obj)
      })
      await reqImportEmployee(arr)
      this.$message({
        message: '批量导入成功',
        type: 'success'
      })
      //   this.$router.push('/employees')
      this.$router.back()
    },
    // 转换excel的日期格式
    formatExcelDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return (
          year +
          format +
          (month < 10 ? '0' + month : month) +
          format +
          (date < 10 ? '0' + date : date)
        )
      }
      return (
        year +
        (month < 10 ? '0' + month : month) +
        (date < 10 ? '0' + date : date)
      )
    }
  }
}
</script>

<style></style>
